"""
1.想要获取月票数据的时候
    --elements里面𘠵𘠳𘠶𘠯𘠹
    --response里面&#100405;&#100403;&#100406;&#100399;&#100409;
        --elements这是网页源代码，先有的rseponse 再有的elements
        &#100405;&#100403;&#100406;&#100399;&#100409;>>>>𘠵𘠳𘠶𘠯𘠹
    --检查一下，月票数据的xpath语法，是会得到空白数据还是&#100405;&#100403;&#100406;&#100399;&#100409;
2.字体反爬数据包
    --表面上三个，经过分析，确定是第三个字体反爬数据包

3.当我们下载了这个字体反爬文件的数据包，打开发现是乱码
    --需要一个第三方库：pip install fonttools
    --把该字体加密文件，进行一个类型的转换
"""



# import re
#
# str_ = '</style><span class="ImurjBYa">&#100405;&#100403;&#100406;&#100399;&#100409;</span></span>月票</p>'
#
# # 字体反爬文件不同了，所以不一样
# # style标签的class属性值不固定，不能写固定，经过测试得知
# poll_list = re.findall(r'</style><span class=".*?">(.*?)</span></span>月票</p>',str_)
# print(poll_list)




"""
字体的反爬:
    --正常用户可以看到的正常数据，直接使用爬虫去进行获取，得到的却是看不懂的密文
        --起点的月票数据，电影网站的评分数据
"""

"""
字体的反爬是如何实现的
浏览器
数据包 >> 单独的做字体反爬的数据包

字体反爬数据包特征：
    --1.每一个网站的都不一样，可以理解是一种加密算法
    --2.是一种后缀为woff的文件
    --3.每一次请求的字体反爬数据包都不一样
    
已经获取到了转换了类型的字体加密文件xml
1 > a 
2 > b 
3 > c
&#100405;&#100403;&#100406;&#100399;&#100409; 
关系映射表  {'a':1,'b':2} >> 存在于map部分
"""





# from fontTools.ttLib import TTFont
# # 创建对象
# font_obj = TTFont('GFVeDmnj.woff')
#
# # 转格式(让我们看得懂)
# font_obj.saveXML('font01.xml')
#
# # 获取加密关系映射表
# # xpath语法 正则
# cmap_dict = font_obj.getBestCmap()
# print(cmap_dict)

"""
每一次请求的字体加密文件不一样
&#100225;&#100227;&#100228;&#100229;&#100231;   response得到的数据  82157
{100225: 'eight', 100227: 'two', 100228: 'one', 100229: 'five', 100230: 'period', 100231: 'seven', 100232: 'six', 100233: 'four', 100234: 'three', 100235: 'nine', 100236: 'zero'}
进行替换得到明文数据

发现有点不一样 >> 发生了自动转义 response里面的就是经过了转义之后的数据
0x18781 > eight
100225 > eight

"""
# a = '0x18781'
# b = int(a,16)  # 16进制的一个转义
# print(b)

# 替换掉response加密月票数据里面的特殊符号
font = '100225,100227,100228,100229,100231'

# 把加密映射表的英文，替换成中文
dict_ = {100225: 'eight', 100227: 'two', 100228: 'one', 100229: 'five', 100230: 'period', 100231: 'seven', 100232: 'six', 100233: 'four', 100234: 'three', 100235: 'nine', 100236: 'zero'}

dict_e_a = {
    'one':'1','two':'2','three':'3','four':'4','five':'5','six':'6','seven':'7','eight':'8','nine':'9','zero':'0','period':'.'
}

for i in dict_:   # 这个dict_它的值 等于 dict_e_a它的键名
    for j in dict_e_a:
        if dict_[i] == j:
            dict_[i] = dict_e_a[j]

print('解析之后的字体加密关系映射表:',dict_)

"""
1.书名列表
2.月票数据密文列表：[&#100225;&#100227;&#100228;&#100229;&#100231;&#100225;&#100227;&#100228;&#100229;&#100231;&#100225;&#100227;&#100228;&#100229;&#100231;&#100225;&#100227;&#100228;&#100229;&#100231;]
3.解析了之后的关系映射表：{100225: '8', 100227: '2', 100228: '1', 100229: '5', 100230: '.', 100231: '7', 100232: '6', 100233: '4', 100234: '3', 100235: '9', 100236: '0'}
"""


"""
1.每一次请求的字体反爬数据包都不一样
    --实时获取 数据包 >> url 寻找数据包的url
    --通过全局搜索，分析到存在于response里面
    --是style标签里面的文本，得到文本之后，再进行正则获取
"""


import re

str_ = """@font-face { font-family: OTEmWsxo; src: url('https://qidian.gtimg.com/qd_anti_spider/OTEmWsxo.eot?') format('eot'); src: url('https://qidian.gtimg.com/qd_anti_spider/OTEmWsxo.woff') format('woff'), url('https://qidian.gtimg.com/qd_anti_spider/OTEmWsxo.ttf') format('truetype'); } .OTEmWsxo { font-family: 'OTEmWsxo' !important;     display: initial !important; color: inherit !important; vertical-align: initial !important; }"""
# format('eot'); src: url('https://qidian.gtimg.com/qd_anti_spider/OTEmWsxo.woff') format('woff')
res_ = re.findall(r"format\('eot'\); src: url\('(.*?)'\) format\('woff'\)",str_)[0]
print(res_)